package net.joint_painting.client.observer;

/**
 * @author CAM
 * @version $Revision: 1.0 $
 */
public class ViewObject {
    /**
     * @author CAM
     * @version $Revision: 1.0 $
     */
    public enum ViewObjectType {
	ZOOMIN, ZOOMOUT, MOVEUP, MOVEDOWN, MOVELEFT, MOVERIGHT, DRAWLINE, SETPAINTERCOLOR, SETPAINTERSIZE
    }

    private Object source;
    private ViewObjectType type;
    private Object argument1;
    private Object argument2;

    /**
     * Constructor for ViewObject.
     * 
     * @param source
     *            Object
     * @param type
     *            ViewObjectType
     */
    public ViewObject(Object source, ViewObjectType type) {
	setSource(source);
	setType(type);
    }

    /**
     * Constructor for ViewObject.
     * 
     * @param source
     *            Object
     * @param type
     *            ViewObjectType
     * @param arg1
     *            Object
     */
    public ViewObject(Object source, ViewObjectType type, Object arg1) {
	setSource(source);
	setType(type);
	setArgument1(arg1);
    }

    /**
     * Constructor for ViewObject.
     * 
     * @param source
     *            Object
     * @param type
     *            ViewObjectType
     * @param arg1
     *            Object
     * @param arg2
     *            Object
     */
    public ViewObject(Object source, ViewObjectType type, Object arg1,
	    Object arg2) {
	setSource(source);
	setType(type);
	setArgument1(arg1);
	setArgument2(arg2);
    }

    /**
     * 
     * @return the object1
     */
    public Object getArgument1() {
	return argument1;
    }

    /**
     * 
     * @return the object2
     */
    public Object getArgument2() {
	return argument2;
    }

    /**
     * 
     * @return the source
     */
    public Object getSource() {
	return source;
    }

    /**
     * 
     * @return the type
     */
    public ViewObjectType getType() {
	return type;
    }

    /**
     * 
     * @param arg1
     *            Object
     */
    public void setArgument1(Object arg1) {
	this.argument1 = arg1;
    }

    /**
     * 
     * @param arg2
     *            Object
     */
    public void setArgument2(Object arg2) {
	this.argument2 = arg2;
    }

    /**
     * @param source
     *            the source to set
     */
    public void setSource(Object source) {
	this.source = source;
    }

    /**
     * @param type
     *            the type to set
     */
    public void setType(ViewObjectType type) {
	this.type = type;
    }

}
